#ifndef LINKEDSTACK_H
#define LINKEDSTACK_H

#include "stdio.h"
#include "stdlib.h"

typedef int ElemType;

typedef struct Node {
    ElemType data;
    struct Node *next;
} Node;

typedef struct LinkedStack {
    Node *top;
} LinkedStack;

LinkedStack *init_stack();

Node *create_node(ElemType data);

int is_empty(LinkedStack *stack);

ElemType top(LinkedStack *stack);

void push(LinkedStack *stack, ElemType data);

ElemType pop(LinkedStack *stack);

void clear_stack(LinkedStack *stack);

void pop_all(LinkedStack *stack);

#endif  // !LINKEDSTACK_H define